/**
 * 2009-10-20 下午05:18:49 
 * esignature
 * com.smc.server
 * DocumentService
 */
package com.smc.server;

import java.util.List;

import com.smc.action.document.NumDocument;
import com.smc.action.document.PdfDocument;
import com.smc.domain.model.Document;
import com.smc.domain.model.Hospital;
import com.smc.domain.model.User;

/**
 * @author chenheng
 * @version 0.0.1
 * 文档操作服务接口
 */
public interface DocumentService {
	/**
	 * 医生对指定文档签名
	 * @param document 指定文档
	 * @param parameters 签名参数
	 */
	public void sign_US_DO_SI_document(Document document,String[] parameters);
	/**
	 * 用户取得签名（未签名）文档列表
	 * @param signed	标记是否已签名
	 * @return
	 */
	public List<Document> fetch_US_DO_FE_document(boolean signed,int pageIndex,int pageSize);
	/**
	 * 取得签名（未签名）文档数据
	 * @param signed
	 * @return
	 */
	public int count_US_DO_FE_document(boolean signed);
	/**
	 * 操作员分配原始文档给对应的医生
	 * @param document		标记需要分配的文档
	 */
	public void save_OP_DO_SA_document(Document document);
	/**
	 * 操作员取得原始文档（传真过来的文档）
	 * @return
	 */
	public List<PdfDocument> fetch_OP_DO_FE_document();
	/**
	 * 操作员取得医院列表
	 * @return
	 */
	public List<Hospital> fetch_OP_HO_FE_hospital();
	/**
	 * 操作员取得对应医院的所有医生
	 * @param hospitalUuid		标记医院主键
	 * @return
	 */
	public List<User> fetch_OP_US_FE_user(String hospitalUuid);
	/**
	 * 医生取得指定的文档
	 * @param uuid
	 * @return
	 */
	public Document fetch_US_DO_FE_document(String uuid);
	/**
	 * 医院用户取得医生文档数量
	 * @param uuid	用户主键
	 * @param orderItem		排序单元
	 * @param pageIndex		当前页数
	 * @param pageSize		每页显示条目数量
	 * @return
	 */
	public List<NumDocument> fetch_HO_DO_FE_documentNum(String uuid,String orderItem,int pageIndex,int pageSize);
	/**
	 * 医院用户按未签名文档数取医生文档数量
	 * @param uuid
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 */
	public List<NumDocument> fetch_HO_DO_FE_documentRankNum(String uuid,String orderItem,int pageIndex,int pageSize);
	/**
	 * 医院用户按病人病历号取医生文档数量
	 * @param uuid			用户主键
	 * @param orderItem		排序单元
	 * @param pageIndex		当面页数
	 * @param pageSize		每页显示条目数量
	 * @return
	 */
	public List<NumDocument> fetch_HO_DO_FE_documentPatientNum(String uuid,String orderItem ,int pageIndex,int pageSize);
	/**
	 * 医院用户取得医生总数
	 * @param uuid	用户主键
	 * @return
	 */
	public int count_HO_DO_FE_documentNum(String uuid);
	/**
	 * 医院用户统计签名文档数量
	 * @param uuid	用户主键
	 * @param signed	是否签名
	 * @return
	 */
	public int count_HO_DO_FE_documentNum(String uuid,boolean signed);
	/**
	 * 医院用户取得（未）签名文档
	 * @param uuid			用户主键
	 * @param signed		是否签名
	 * @param pageIndex		当前页数
	 * @param pageSize		每页显示条目数量
	 * @return
	 */
	public List<Document> fetch_HO_DO_FE_document(String uuid,boolean signed,int pageIndex,int pageSize);
	/**
	 * 医院用户搜索文档
	 * @param uuid	用户主键
	 * @param parameters	参数，键值对（key/value）
	 * @param pageIndex		当前页面数
	 * @param pageSize		每页显示条目数量 
	 * @return
	 */
	public List<Document> fetch_HO_DO_FE_document(String uuid,String[] parameters,int pageIndex,int pageSize);
	/**
	 * 医院用户统计搜索文档的数量
	 * @param uuid	用户主键
	 * @param parameters	参数，键值对(key/value)
	 * @return
	 */
	public int count_HO_DO_FE_document(String uuid,String[] parameters) ;
}

